package com.liujit.upms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.liujit.common.domain.params.BaseParams;
import com.liujit.common.domain.result.PageBean;
import com.liujit.upms.domain.model.SysUser;
import com.liujit.upms.domain.params.CheckPwdParams;
import com.liujit.upms.domain.params.ModifyPwdParams;
import com.liujit.upms.domain.params.SysUserParams;
import com.liujit.upms.domain.params.SysUserRoleParams;
import com.liujit.upms.domain.query.SysUserQuery;
import com.liujit.upms.domain.result.SysUserResult;
import com.liujit.upms.domain.result.UserInfoResult;

import java.util.List;

/**
 * @Description 系统用户Service
 * @Author liujun
 * @Date 2021-07-02 15:01:25
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 根据系统用户分页查询条件，分页查询系统用户列表
     *
     * @param query 系统用户分页查询条件
     * @return 分页列表结果
     * @author: liujun
     * @date: 2021/6/23 5:02 下午
     */
    PageBean<SysUserResult> getPage(SysUserQuery query);

    /**
     * 根据系统用户添加/修改请求参数，添加/修改系统用户
     *
     * @param params 系统用户添加/修改请求参数
     * @return 添加/修改结果
     * @author: liujun
     * @date: 2021-07-02 15:01:25
     */
    Boolean save(SysUserParams params);

    /**
     * 根据系统用户id，查询系统用户
     *
     * @param id 系统用户id
     * @return 查询结果
     * @author: liujun
     * @date: 2021-07-02 15:01:25
     */
    SysUserResult get(Long id);

    /**
     * 根据系统用户id，查询系统用户
     *
     * @param id 系统用户id
     * @return 查询结果
     * @author: liujun
     * @date: 2021/7/7 5:35 下午
     */
    SysUserResult getDetail(Long id);

    /**
     * 根据系统用户删除请求参数，删除系统用户
     *
     * @param params 系统用户删除请求参数
     * @return 删除结果
     * @author: liujun
     * @date: 2021-07-02 15:01:25
     */
    Boolean del(BaseParams params);

    /**
     * 根据系统用户启用请求参数，启用系统用户
     *
     * @param params 系统用户启用请求参数
     * @return 启用结果
     * @author: liujun
     * @date: 2021-07-02 15:01:25
     */
    Boolean enabled(BaseParams params);

    /**
     * 根据系统用户禁用请求参数，禁用系统用户
     *
     * @param params 系统用户禁用请求参数
     * @return 禁用结果
     * @author: liujun
     * @date: 2021-07-02 15:01:25
     */
    Boolean disabled(BaseParams params);

    /**
     * 根据系统用户账号，查询系统用户
     *
     * @param account 系统用户账号
     * @return 系统用户
     * @author: liujun
     * @date: 2021/6/26 3:29 下午
     */
    SysUser getByAccount(String account);

    /**
     * 根据系统用户账号，查询系统用户条数
     *
     * @param account 系统用户账号
     * @return 系统用户条数
     * @author: liujun
     * @date: 2021/6/27 1:30 下午
     */
    Integer getCountByAccount(String account);

    /**
     * 根据校验密码请求参数、验证密码是否正确
     *
     * @param params 校验密码请求参数
     * @return 校验结果
     * @author: liujun
     * @date: 2021/7/2 11:30 下午
     */
    Boolean checkPassword(CheckPwdParams params);

    /**
     * 根据修改密码请求参数、修改密码
     *
     * @param params 修改密码请求参数
     * @return 修改密码结果
     * @author: liujun
     * @date: 2021/7/2 11:33 下午
     */
    Boolean modifyPassword(ModifyPwdParams params);

    /**
     * 查询用户详细信息，包含路由，权限
     *
     * @return 用户详细信息
     * @return
     * @author: liujun
     * @date: 2021/7/4 9:34 上午
     */
    UserInfoResult getInfo();

    /**
     * 根据系统用户id查询系统用户角色编号列表
     *
     * @param userId 系统用户id
     * @return 系统用户角色id
     * @author: liujun
     * @date: 2021/6/23 5:02 下午
     */
    List<Long> getRoleIdByUserId(Long userId);

    /**
     * 根据请求参数修改系统用户角色
     *
     * @param params 系统用户角色修改请求参数
     * @return 修改结果
     * @author: liujun
     * @date: 2021/6/23 5:03 下午
     */
    Boolean modifyUserRole(SysUserRoleParams params);
}
